﻿using System;
using System.Data;
using System.Collections.Generic;
using System.Text;
using TPDiseño.Clases_de_Entidad;


namespace TPDiseño.DTO_s
{
    public class DTOCandidatoClave
    {
        // Atributos
        private Candidato _candidato; //Internamente tiene un candidato.. el dto envuelve a este (genera transparencia)
        private string _clave;

        // Propiedades
        public string tipoDocumento
        {
            get
            {
                return _candidato._tipo_documento;
            }
            set
            {
                _candidato._tipo_documento = value;
            }
        }
        public string NumeroDocumento
        {
            get
            {
                return _candidato._nro_documento;
            }
            set
            {
                _candidato._nro_documento = value;
            }
        }


        public string nombre
        {
            get
            {
                return _candidato._nombre;
            }
            set
            {
                _candidato._nombre = value;
            }
        }
        public string apellido
        {
            get
            {
                return _candidato._apellido;
            }
            set
            {
                _candidato._apellido = value;
            }
        }

        public string clave
        {
            get
            {
                return _clave;           
            }
            set
            {
                _clave = value;
            }
        }

        // Constructores
        public DTOCandidatoClave(Candidato unCandidato) {
            // Seteo el candidato
            this._candidato = unCandidato;
        }

        public DTOCandidatoClave(Candidato unCandidato, string unaClave):
            this(unCandidato)
        {
            // Seteo la clave
            this._clave = unaClave;
        }

        public DTOCandidatoClave(DTOCandidatoResult unCandidato, string unaClave) :
            this(unCandidato.candidatoInstancia())
        {
            // Seteo la clave
            this._clave = unaClave;
        }

        // Metodos

        public Candidato candidatoInstancia()
        {
            return _candidato;
        }
        
        public object[] toArray()
        {
            // Creo el arreglo
            var arreglo = new object[5];
            // Seteo el arreglo...
            arreglo[0] = this.nombre;
            arreglo[1] = this.apellido;
            arreglo[2] = this.tipoDocumento;
            arreglo[3] = this.NumeroDocumento;
            arreglo[4] = this.clave;

            // Finalmente retorno el arreglo
            return arreglo;
        }
        public string toString()
        {
            return " [" + this.nombre + " " + this.apellido + " " + this.tipoDocumento + " " + this.NumeroDocumento + "] ";
        
        }
    }
}
